const fs = require('fs')
// 路径
const path = 'F:/xxdl/users'

// 获取当前所有的应用名称
const getNames = (path) => {
    const result = []
    // 处理文件
    const disposeFile = (path, result) => {
        const items = fs.readdirSync(path);
        for (let i = 0; i < items.length; i++) {
            const item = items[i]
            const itemPath = `${path}/${item}`;
            const stat = fs.statSync(itemPath);
            if (stat.isDirectory()) {
                disposeFile(itemPath, result)
            } else if (item === 'package.json') {
                // 读取内容
                const data = fs.readFileSync(`${path}/${item}`)
                const {name} = JSON.parse(data.toString())
                const splitPath = path.split('/')
                // 文件
                result.push({
                    // 文件所在的目录
                    filePath: `${path}/${item}`,
                    // 当前项目的目录便于进行备份
                    projectPath: path.slice(0, path.lastIndexOf('/')),
                    // 文件名称
                    fileName: item,
                    // 项目名称
                    name
                });
            }
        }
    }
    // 获取到所有的目录
    const items = fs.readdirSync(path)
    for (let i = 0; i < items.length; i++) {
        const item = items[i]
        const res = []
        disposeFile(`${path}/${item}`, res)
        result.push({
            user: item,
            names: [...res]
        })
    }
    return result
}
// const names = getNames(path)
// console.log(names[0])

// 备份功能
const archiver = require('archiver');

const zipDir = (path,name) => {
    const realPath = path.slice(path.lastIndexOf('/'))
    // 第二步，创建可写流来写入数据
    // 将压缩包保存到当前项目的目录下，并且压缩包名为test.zip
    const output = fs.createWriteStream( `${__dirname}/${name}.zip`);
    // 设置压缩等级
    const archive = archiver('zip', {zlib: {level: 9}});

    // 第三步，建立管道连接
    archive.pipe(output);
    // 第四步，压缩目录到压缩包中
    // archive.directory(path, realPath);
    archive.directory(path, false);

    // 第五步，完成压缩
    archive.finalize();
}
zipDir('F:/xxdl/users/637987261136986114/apps/0172035d-10e8-4dcb-81c7-9a9fb70786c3','测试')


